package array;

import java.io.IOException;

class M {
	void method() throws IOException {
		System.out.println("device operation performed");
		  throw new IOException("device error");  
		  
	}
}


class N{
	public void testname() throws IOException  {
		M m = new M();
		System.out.println("hi");
		m.method();
		System.out.println("ji");
	}
}
//in this class exception occured but we did not handle.
class Test {
	public static void main(String args[]) throws IOException {// declare
																// exception
		N n =  new N();
//		try{
			n.testname();
//		}catch(Exception e){
//			System.out.println("caught");
//		}

		System.out.println("normal flow...");
	}
}



/*

throw keyword	throws keyword
1)throw is used to explicitly throw an exception.				throws is used to declare an exception.
2)checked exception can not be propagated without throws.		checked exception can be propagated with throws.
3)throw is followed by an instance.								throws is followed by class.
4)throw is used within the method.								throws is used with the method signature.
5)You cannot throw multiple exception							You can declare multiple exception e.g.
																public void method()throws IOException,SQLException.

*/